package main

import (
	"go-learm-2/demo01"
	"go-learm-2/demo02"
	"go-learm-2/demo03"
	"go-learm-2/demo04"
	"go-learm-2/demo05"
	"go-learm-2/demo06"
	"go-learm-2/demo07"
	"go-learm-2/mian01"
)

// https://juejin.cn/post/7418072992845938698#heading-1
func main() {
	//demo01Test()
	//demo02Test()
	//demo03Test()
	//demo04Test()
	//demo05Test()
	//demo06Test()
	demo07Test()
	//mian01Test()
}

func mian01Test() {
	mian01.ChannelDemo01()
}

func demo07Test() {
	demo07.HTTPHandle01()
}

func demo06Test() {
	//demo06.NewExcel01()
	//demo06.OpenExcel01()
	//demo06.WriteExcel01()
	//demo06.ReadExcel01()
	//demo06.ChartExcel01()
	//demo06.ReadWriteDemo()
	demo06.ReadWriteDemo2()
}

func demo05Test() {
	//demo05.SlogDemo()
	//demo05.ZeroLogDemo()
	//demo05.ZeroLogDemo2()
	//demo05.ZeroLogDemo3()
	demo05.ZeroLogDemo01()
}

// Go中Context的应用场景
// https://juejin.cn/post/7400196065922695204
func demo04Test() {
	//demo04.WorkerDemo()
	//demo04.ContextDemo()
	//demo04.TimeoutDemo()
	//demo04.WithDeadlineDemo()
	//demo04.ProcessRequestDemo()
	demo04.PerformRequestDemo()
}

// 优雅封装Golang的配置项
// https://juejin.cn/post/7400206885880627263?utm_source=gold_browser_extension#heading-5
func demo03Test() {
	//demo03.BuilderDemo()
	//demo03.OptionFunDemo()
	demo03.OptionFunDemo2()
}

// https://juejin.cn/post/7418391732163969039
// select的使用
func demo02Test() {
	//demo02.SelectDemo1()
	//demo02.SelectDemo2()
	demo02.SelectDemo3()
}

// Go语言的Sync，你知道多少
// https://juejin.cn/post/7418072992845938698#heading-1
func demo01Test() {
	//demo01.ChannelDemo()
	//demo01.WaitGroupDemo()
	//fmt.Println(demo01.InitConfig())
	//demo01.LockDemo01()
	//demo01.LockDemo02()
	//demo01.RWLockDemo()
	//demo01.SyncMapDemo()
	//demo01.AtomicDemo()
	//demo01.AtomicValueDemo()
	//demo01.SyncPoolDemo01()
	demo01.SyncPoolDemo02()
}
